package com.lwgk.utils;

import android.media.AudioAttributes;
import android.media.AudioManager;
import android.media.SoundPool;

import com.lwgk.AppComplication;
import com.lwgk.R;

/**
 * created by 赵航
 * 联系微信 微信号：zhao--hang--
 * on 2019/7/15
 * --------------------------------------------------------------------------
 * 描述：音乐播放器，
 * 注意事项：不能重复课外部控制停止，仅仅提供响声,有播放声音监听，暂时没用，使用方法   MusicUtlis.getInstance().musicPlay(true);
 */
public class MusicUtlis {
    private static final MusicUtlis instance = new MusicUtlis();
    private              SoundPool  mSoundPool;
    private              int        mDuanSound;

    //这里提供了一个供外部访问本class的静态方法，可以直接访问
    public static MusicUtlis getInstance() {
        return instance;
    }

    /**
     * maxStreams 同时播放流的最大数量，当播放的流的数目大于此值，则会选择性停止优先级较低的流
     * streamType 流类型，比如 STREAM_MUSIC
     * srcQuality 采样率转换器质量,目前没有什么作用,默认填充0
     *
     * @param isPaly
     */
    public void musicPlay(boolean isPaly) {
        //        if (mSoundPool==null) {
        //            mSoundPool = new SoundPool(2, AudioManager.STREAM_MUSIC, 0);
        //            //预加载音乐
        //            mDuanSound = mSoundPool.load(AppComplication.mContext, R.raw.duan, 1);
        //        }
        //        if (isPaly){
        //            mSoundPool.play(mDuanSound, 1, 1, 0, 0, 1);
        //        }
        if (mSoundPool == null) {
            // 5.0 及 之后
            if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
                AudioAttributes audioAttributes = null;
                audioAttributes = new AudioAttributes.Builder()
                        .setUsage(AudioAttributes.USAGE_MEDIA)
                        .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
                        .build();

                mSoundPool = new SoundPool.Builder()
                        .setMaxStreams(1)
                        .setAudioAttributes(audioAttributes)
                        .build();
            } else { // 5.0 以前
                mSoundPool = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);  // 创建SoundPool
            }

            mDuanSound = mSoundPool.load(AppComplication.mContext, R.raw.duan, 1);
        }
        // 设置加载完成监听
//        mSoundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {
//            @Override
//            public void onLoadComplete(SoundPool soundPool, int sampleId, int status) {
//            }
//        });

        if (isPaly) {
            /**
             * 1.soundID load方法返回的值,指向某个已加载的音频资源
             *  2.leftVolume\rightVolume 用来这种左右声道的值.范围 0.0f ~ 1.0f
             *    3.priority 流的优先级
             *       4.loop 循环播放的次数, -1 表示无限循环
             *          5.rate 播放的速率 , 2 表示2倍速度
             */
            mSoundPool.play(mDuanSound, 1, 1, 0, 0, 1);
        }

    }
}